#ifndef FILTERS_H_INCLUDED
#define FILTERS_H_INCLUDED

#include <math.h>
using namespace std;

typedef struct _COMPLEX
{
     double real;
     double imag;
     double module;
}COMPLEX;

void DFT( int dir, int height, int width, COMPLEX** matrixIn, COMPLEX** matrixOut );
double getModule( COMPLEX comp );
double getGreaterModule( void );

void lowPass( COMPLEX** matrix, int height, int width, double radius );
void highPass( COMPLEX** matrix, int height, int width, double radius );

/**
Fast Fourier Transform
*/
int Powerof2( int nx, int *m, int *twopm );
int FFT2D( COMPLEX** matrixIn, COMPLEX** matrixOut, int nx, int ny, int dir );
int FFT( int dir, int m, double *x, double *y );

#endif // FILTERS_H_INCLUDED
